package com.ayz.gateway.springbootstarter.annotation;

import java.lang.annotation.*;

/**
 * API网关类上的注解，代表着该类要被API网关所管理
 */
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Target({ElementType.TYPE})
public @interface ApiProviderClazz {

    /**
     * API接口的名称
     * 如果没指定则默认设置为接口的全类路径名
     * @return
     */
    String interfaceName() default "";

    /**
     * 当前API中的所有方法，在API网关发起泛化调用的时候
     * 是同步调用还是异步调用
     * 默认是异步调用
     * @return
     */
    boolean isAsync() default true;

    /**
     * API网关发起泛化调用的时候的超时时间
     * 默认是-1 即不超时
     * @return
     */
    long timeout() default -1;

    /**
     * 当前接口的版本信息
     * @return
     */
    String version() default "";

}
